<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // Number.isNaN和isNaN的区别
        /*
            isNaN: 为了判断一个计算结果或者变量的值是否为NaN
            isNaN的判断过程：首先进行类型检测，如果传入的参数不是数值类型，第二步将传入的参数转为数值类型，然后再进行是否为NaN的判断
        */ 

        // 来看看这些值转为数值类型会成为什么
        Number('');//0
        Number(null);//0
        Number(true);//1
        Number(false);//0
        Number(undefined);//NaN
        Number('aa');//NaN

        // isNaN()
        console.log(isNaN(NaN));//true, 这个你应该没啥疑问吧
        console.log(isNaN(true));//false, true转为数值类型为1，很明显1肯定不是NaN
        console.log(isNaN('aaa'));//true, aaa转为数值类型为NaN
        console.log(isNaN(null));//false, null转为数值类型为0, 0肯定不是NaN
        console.log(isNaN(''));//false, 空字符串转为数值类型为0, 0肯定不是NaN

        console.log('------------------------');

        // Number.isNaN()这个方法不会像全局的isNaN一样进行类型转换，所以如果你传入的值不是数值类型，就直接返回false。如果是数值类型，则以isNaN()的方式判断
        console.log(Number.isNaN(NaN));//true, 这个你应该没啥疑问吧
        console.log(Number.isNaN(1));//false, 1肯定不是NaN
        console.log(Number.isNaN(true));//false, 传进来的不是数值类型
        console.log(Number.isNaN('aaa'));//false, 传进来的不是数值类型
        console.log(Number.isNaN(null));//false, 传进来的不是数值类型
        console.log(Number.isNaN(''));//false, 传进来的不是数值类型
    </script>
</body>
</html>